Some conventional memory repair methods have low success rates, thus resulting in limited memory yield. Row-first repair methods (replacing faulty rows first) and/or column-first repair methods (replacing faulty columns first) are relatively simple and have relatively less timing penalties. However, those methods cannot repair some defective memories that can be repaired by other redundancy arrangements. On the other hand, complex repair methods (e.g., using a row-first repair method, then replacing it with a column-first repair method if not successful, etc.) incur expensive testing costs and need longer run times to finish the repair. Accordingly, new circuits and methods are desired to solve the above problems.